c2VydmljZS5wbGF5U291bmRUaWNrKCkKaWYgc2VydmljZS5jbGljayh7CnsibXV0ZSp8dW5tdXRlKnxtdXRlZCopdW5tdXRlZCopdHVybiBtaWNyb3Bob25lKgp9Cn0pCnJldHVybiB0cnVlCmVuZAppZiBzZXJ2aWNlLmNsaWNrKHsKeyIjdm9pY2Vfbm90ZV9kcmFmdF9zdG9wX2J0bl92MiwKfQp9KQpyZXR1cm4gdHJ1ZQplbmQKaWYgc2VydmljZS5jbGljayh7CnsiaXN0b3BfYnRuIgp9Cn0pCnJldHVybiB0cnVlCmVuZApyZXF1aXJlICJpbXBvcnQiOwppbXBvcnQgImFuZHJvaWQuY29udGVudC5Db250ZXh0Igp
pbXBvcnQgImFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyIgp
pbXBvcnQgImNvbS5hbmRyb2x1YS4qIgp
sb2NhbCBhdWRpb01hbmFnZXI9c2VydmljZS5nZXRTeXN0ZW1TZXJ2aWNlKHRoaXMuQVVESU9fU0VSVklDRSkKbG9jYWwgYXVkaW9Nb2RlID0gYXVkaW9NYW5hZ2VyLmdldFJpbmdlck1vZGUoKQppZiBhdWRpb01vZGUgPT0gMSB0aGVuCmF1ZGlvTWFuYWdlci5zZXRSaW5nZXJNb2RlKGF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9OT1JNQUwpCnNlcnZpY2UucGxheVNvdW5kVGljaygpCnNlcnZpY2Uuc3BlYWsoInlvdXIgcGhvbmUgaXMgc3dpdGNoZWQgdG8gbm9ybWFsIG1vZGUiKQplbHNlaWYgYXVkaW9Nb2RlID09ID
yB0aGVuCmF1ZGlvTWFuYWdlci5zZXRSaW5nZXJNb2RlKGF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9WSUJSQVRFKQ